// Liczenie referencji do obiektw acuchowych

#import <Foundation/Foundation.h>

int main (int argc, char *argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    NSString          *myStr1 = @"Staa acuchowa ";
    NSString          *myStr2 = [NSString stringWithString: @"acuch 2"];
    NSMutableString   *myStr3 = [NSMutableString stringWithString: @"acuch 3"];
    NSMutableArray    *myArr = [NSMutableArray array];

    NSLog (@"Licznik referencji: myStr1: %lx, myStr2: %lx, myStr3: %lx",
             (unsigned long) [myStr1 retainCount],
             (unsigned long) [myStr2 retainCount],
             (unsigned long) [myStr3 retainCount]);

    [myArr addObject: myStr1];
    [myArr addObject: myStr2];
    [myArr addObject: myStr3];

    NSLog (@"Licznik referencji  : myStr1: %lx, myStr2: %lx, myStr3: %lx",
             (unsigned long) [myStr1 retainCount],
             (unsigned long) [myStr2 retainCount],
             (unsigned long) [myStr3 retainCount]);

    [myStr1 retain];
    [myStr2 retain];
    [myStr3 retain];

    NSLog (@"Licznik referencji: myStr1: %lx, myStr2: %lx, myStr3: %lx",
             (unsigned long) [myStr1 retainCount],
             (unsigned long) [myStr2 retainCount],
             (unsigned long) [myStr3 retainCount]);

    // Zmniejszenie licznika referencji obiektu myStr3
    [myStr3 release];

    [pool drain];
    return 0;
}